In many contexts, it is useful to provide partial or full redundancy for stored data. Although the present invention is not necessarily limited to disk drives, in the context of disk drives, data redundancy is sometimes described or provided as one of various types of RAID (redundant array of inexpensive drives) systems. In one such system, each disk drive has a corresponding “mirror” drive and operations are coordinated such that all, or substantially all, data written to one drive is also written to the other. Many previous RAID systems were provided primarily for purposes of data integrity, such that if some or all data was corrected or destroyed in one copy, another copy of the same data was available.
One common operation generally associated with RAID systems is drive select, and is typically used for determining from which of the two (or more) disk drives of the RAID system, data requested by the host, will be read. At least some previous approaches have used relatively complex systems of microprocessors and/or data buffers for performing operations such as drive select, or other RAID functions. Such approaches have contributed to undesirably high costs for RAID systems and, accordingly, it would be advantageous to provide an implementation for a RAID system, while eliminating the need for a microprocessor and/or data buffers.
In some approaches to RAID systems, read functionality is achieved substantially by software running on a host device. Such systems can be vulnerable, however, if the host device operating system fails to “boot” on one of the drives of the RAID system. This is believed to be a difficulty with software RAID systems, even though “boot files” may reside on both disks of a RAID system. Accordingly, it would be useful to provide a RAID system which is relatively less susceptible to boot up problems than the typical software RAID system.
In at least some RAID systems, RAID functionality is provided on a circuit board which often, but not always, occupies a PCI slot and which is typically substantially stand-alone, in the sense that it does not substantially take advantage of capabilities which are, or can be, available on other components of the RAID system, such as drive firmware or other logic. Accordingly, it would be useful to provide a RAID system which utilizes drive firmware to augment its functionality.
Many previous RAID systems respond to a read error by switching future reads to a secondary or backup disk of the RAID system. Often, it is left to the user to attend to the task of resynchronizing the data (so that at least two copies of all data are distributed among the disk of the RAID system). Until such manual resynchronization is performed, there is a risk that an error in the second disk of the RAID system could render some data irretrievably lost. Accordingly, it would be useful to provide a RAID system which can readily resynchronize data after an error, preferably in a manner substantially transparent to the user.
Many previous RAID systems are directed to data security and integrity. Little, if any, attention has been given to opportunities for enhancing system performance, such as decreasing latency and/or improving data throughput. Accordingly, it would be advantageous to provide a RAID system which provides enhanced performance using a two (or more) disk combination.
In a number of contexts, it may be desirable to perform a substantially full transfer or copy of the contents of one disk to another. One example might occur when one drive of a RAID or multi-drive system is replaced. Disk duplication provides another example. Such operations often involve transferring data from a source drive, to a host computer and then transferring the data from host computer to the other drive, for writing thereon. This procedure can be undesirably slow. Other examples of undesirably slow host-mediated transfers can include data transfers for purposes such as disk resynchronization, error correction, and the like. Accordingly, it would be useful to provide a system for transferring information between two or more disk drives in a RAID system or multi-disk system which does not require mediation of intermediate transfer to a host computer.
Many previous RAID systems use circuitry for providing at least some RAID functionality which resides on cards positioned a substantial distance from the drives, often providing for communication through relatively long ribbon cables and the like. Relatively long path lengths can undesirably degrade signal quality, particularly in the case of high speed data transfer rates. Accordingly, it would be useful to provide a RAID system which can reduce the length of some signal paths compared to previous RAID systems.
Many previous RAID systems, intended for use in a typical personal computer or desktop computer context, employ the same general type of disk drives which are used as individual disk drives in non-RAID applications. Most desktop computers have a chassis which defines one or more “bays” for accommodating disk drives or similar components, each bay having a “form factor” which is substantially a rectangular solid having a width, height and depth. Disk drives intended for use in desktop computers are typically manufactured to fit within a predefined “form factor.” There are, in general, several well-established form factors including, e.g., a “5.25 inch drive” form factor, a “3.5 inch drive” form factor, and a “CD ROM” form factor. Because, as noted, many previous approaches to a RAID system for a desktop computer have employed substantially standard disk drives, in many previous approaches a two-drive RAID system would require the use of two drive bays, plus, possibly, additional space (potentially occupying yet another drive bay) for control cards, connectors, or other components. Because it is generally desirable to minimize spatial requirements of a system (e.g., to free space for other components and/or simplify cooling requirements), it would be useful to provide a desktop computer RAID system which can be substantially positioned within a single drive bay, such as a single 5.25 inch form factor, a single 3.5 form factor, or a single CD ROM form factor, preferably, including any required control cards, connectors or similar components.